package map;
import java.sql.*;
import java.util.*;
import dm.*;


public class TituloDAO {
	
    public void AddTitulo(String cod, String titulo, double precio, String nroEditorial)
    {
    	// sin implementar
    }
    
    public void DelTitulo(String cod)
    {
    	// sin implementar
    }
    
    public Set<Titulo> GetTitulosPorEditorial(String editorial) throws SQLException
    {
       	String sentencia = "select * from titles inner join (select * from publishers where pub_name = ?) p on titles.pub_id = p.pub_id";
		PreparedStatement cstmt = new ConfigDAO().GetPrepareCall(sentencia);
		cstmt.setString(1, editorial);
		Set<Titulo> titulos = new HashSet<Titulo>();
		ResultSet rst = cstmt.executeQuery();
		while (rst.next())
		{
			titulos.add(MapTitulo(rst));
		}
		cstmt.getConnection().close();
		return titulos;
    }
    
	public Set<Titulo> GetTitulos() throws SQLException
	{
       	String sentencia = "select * from titles inner join publishers on titles.pub_id = publishers.pub_id";
		PreparedStatement cstmt = new ConfigDAO().GetPrepareCall(sentencia);
		Set<Titulo> titulos = new HashSet<Titulo>();
		ResultSet rst = cstmt.executeQuery();
		while (rst.next())
		{
			titulos.add(MapTitulo(rst));
		}
		cstmt.getConnection().close();
		return titulos;
	}
	
	Titulo MapTitulo(ResultSet rs) throws SQLException {
		Titulo titulo = new Titulo();
		Editorial editorial = new Editorial();
		titulo.setCodigo(rs.getString("title_id"));
		titulo.setTitulo(rs.getString("title"));
		titulo.setPrecio(rs.getDouble("price"));
		editorial.setNombre(rs.getString("pub_name"));
		titulo.setEditorial(editorial);
		return titulo;
	}
}
